﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SIMCObjetoNegocio
{
    public class TipoPortafolioCollection
    {
        private List<Portafolio> lista = new List<Portafolio>();      

        public int Cantidad
        {
            get
            {
                return lista.Count;
            }
        }

        public List<TipoPortafolio> TiposPortafolio
        {
            get
            {
                var query = lista.Select(p => new
                                        {
                                            p.TipoPortafolio,
                                            p.DescripcionTipoPortafolio
                                        }).Distinct();                                                

                return query.Select(x => new TipoPortafolio
                {
                    codigo = x.TipoPortafolio,
                    descripcion = x.DescripcionTipoPortafolio
                }).ToList();
            }
        }

        public double? Sumar(string p_TipoPortafolio)
        {
            return lista.Where(p => p.TipoPortafolio == p_TipoPortafolio)
                        .Select(p => p.PatrimonioNeto)
                        .Sum();
        }

        public List<Portafolio> Obtener(string p_TipoPortafolio)
        {
            return lista.Where(p => p.TipoPortafolio == p_TipoPortafolio)
                        .Select(p => p)
                        .ToList();
        }

        public List<Portafolio> ObtenerPorEstadoAsociacion(string p_TipoPortafolio, EstadoPortafolioUsuario p_Estado)
        {
            return lista.Where(p => p.TipoPortafolio == p_TipoPortafolio && p.EstadoAsociacion == p_Estado)
                        .Select(p => p)
                        .ToList();
        }

        public void Agregar(Portafolio p_Objeto)
        {
            lista.Add(p_Objeto);
        }

        public void Agregar(List<Portafolio> p_Lista)
        {
            lista.AddRange(p_Lista);
        }
    }
}
